//
//  ViewController.m
//  MutipleTableView
//
//  Created by admin on 2022/1/21.
//

#import "ViewController.h"
#import "TableViewDelegateSource.h"

@interface ViewController () <UITableViewDelegate, UITableViewDataSource>

@property(nonatomic, strong)UITableView * tableView1;
@property(nonatomic, strong)UITableView * tableView2;

@property(nonatomic, strong)TableViewDelegateSource * source1;
@property(nonatomic, strong)TableViewDelegateSource * source2;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.tableView1 = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width * 1, self.view.frame.size.height) style:(UITableViewStylePlain)];
    self.tableView1.sectionHeaderTopPadding = 0;
    self.tableView1.allowsSelection = true;
    [self.view addSubview:self.tableView1];
    
    TableViewDelegateSource * source1 = [[TableViewDelegateSource alloc]initWithTableView:self.tableView1];
    source1
        .numberOfSectionsInTableView(^NSInteger(UITableView * _Nonnull tableView) {
            return 3;
        })
        .numberOfRowsInSection(^NSInteger(UITableView * _Nonnull tableView, NSInteger section) {
            return 3;
        })
        .heightForHeaderInSection(^CGFloat(UITableView * _Nonnull tableView, NSInteger section) {
            return 50;
        })
        .viewForHeaderInSection(^UIView * _Nonnull(UITableView * _Nonnull tableview, NSInteger section) {
            UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 50)];
            label.textColor = [[UIColor alloc]initWithRed:arc4random()%128/255.0 green:arc4random()%123/255.0 blue:arc4random()%123/255.0 alpha:1];
            label.backgroundColor = [[UIColor alloc]initWithRed:(arc4random()%123+123)/255.0 green:(arc4random()%123+123)/255.0 blue:(arc4random()%123+123)/255.0 alpha:1];
            label.text = [NSString stringWithFormat:@"header : %ld", section];
            return label;
        })
        .heightForRowAtIndexPath(^CGFloat(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) {
            return 40;
        })
        .cellForRowAtIndexPath(^UITableViewCell * _Nonnull(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) {
            UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"tableview1cell"];
            if (cell == nil) {
                cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"tableview1cell"];
            }
            cell.textLabel.text = @"tableview 1";
            return cell;
        })
        .heightForFooterInSection(^CGFloat(UITableView * _Nonnull tableView, NSInteger section) {
            return 50;
        })
        .viewForFooterInSection(^UIView * _Nonnull(UITableView * _Nonnull tableview, NSInteger section) {
            UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 50)];
            label.textColor = [[UIColor alloc]initWithRed:(arc4random()%123+123)/255.0 green:(arc4random()%123+123)/255.0 blue:(arc4random()%123+123)/255.0 alpha:1];
            label.backgroundColor = [[UIColor alloc]initWithRed:arc4random()%128/255.0 green:arc4random()%123/255.0 blue:arc4random()%123/255.0 alpha:1];
            label.text = [NSString stringWithFormat:@"footer : %ld", section];
            return label;
        })
        .didSelectRowAtIndexPath(^(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) {
            NSLog(@"didSelectRowAtIndexPath : %@ !", indexPath);
            [tableView deselectRowAtIndexPath:indexPath animated:true];
        })
        .willDisplayCell(^(UITableView * _Nonnull tableView, UITableViewCell * _Nonnull cell, NSIndexPath * _Nonnull indexPath) {
            NSLog(@"willDisplayCell : %@ !", indexPath);
        });
    // 保存一个引用是必要的，不然执行万就释放了
    self.source1 = source1;
    
    
    self.tableView2 = [[UITableView alloc]initWithFrame:CGRectMake(self.view.frame.size.width * 0.34, 0, self.view.frame.size.width * 0.66, self.view.frame.size.height) style:(UITableViewStylePlain)];
//    [self.view addSubview:self.tableView2];
    TableViewDelegateSource * source2 = [[TableViewDelegateSource alloc]initWithTableView:self.tableView2];
    
    source2.numberOfSectionsInTableView(^NSInteger(UITableView * _Nonnull tableView) {
        return 2;
    }).numberOfRowsInSection(^NSInteger(UITableView * _Nonnull tableView, NSInteger section) {
        return 4;
    }).heightForRowAtIndexPath(^CGFloat(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) {
        return 40;
    }).cellForRowAtIndexPath(^UITableViewCell * _Nonnull(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) {        UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"tableview2cell"];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"tableview2cell"];
        }
        cell.textLabel.text = @"table 2";
        return cell;
    });
    
    self.source2 = source2;
}
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
//    self.tableView1.delegate = self;
    NSLog(@"");
}
#pragma mark - 后面就没用了
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if (tableView == self.tableView1) {
        return 2;
    } else {
        return 1;
    }
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.tableView1) {
        return 10;
    } else {
        return 20;
    }
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == self.tableView1) {
        return 40;
    } else {
        return 60;
    }
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == self.tableView1) {
        UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"tableview1cell"];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"tableview1cell"];
        }
        cell.textLabel.text = @"I'm in tableview 1";
        return cell;
    } else {
        UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"tableview2cell"];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"tableview2cell"];
        }
        cell.textLabel.text = @"I'm in tableview 2";
        return cell;
    }
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
        NSLog(@"target : %@ did Selected!", indexPath);
        [tableView deselectRowAtIndexPath:indexPath animated:true];
}

@end
